package br.sc.senai.control.managedbeans;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;


import br.sc.senai.model.dao.EntitiesDAO;
import br.sc.senai.model.entity.Cliente;
import br.sc.senai.model.exception.EntitiesDAOExcption;

/**
 * 
 * @author Thiago TW
 * @14/06/2013
 * @locadora-de-carros
 * @ClienteMB.java
 * @param <Cliente>
 */

@ManagedBean(name = "ClienteMB")
@RequestScoped
public class ClienteMB<T> {

	EntitiesDAO<Cliente> clientedao;

	private Cliente cliente = new Cliente();

	
	//Inserir objeto
	public boolean Insert() {

		boolean ok = false;
		try {
			clientedao.add(cliente);
			ok = true;
		} catch (EntitiesDAOExcption e) {
			ok = false;
			System.out.println("Erro linha 40 "+ok);
			e.printStackTrace();
		}

		return ok;
	}
	
	//Retorna um objeto pelo ID
	public Cliente getById(int id){
		
		Cliente cli = new Cliente();
		
		try {
			cli = clientedao.getById(id);
		} catch (EntitiesDAOExcption e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return cli;
		
	}
	
	//Altera os atributos de um objeto.
	public boolean Alter(){
		
		boolean ok = false;
		
		try {
			clientedao.update(cliente);
			ok = true;
		} catch (EntitiesDAOExcption e) {
			ok = false;
			e.printStackTrace();
		}
		return ok;
	}
	

	//Retorna uma lista com todos Objetos
	public List<Cliente> LoadAllClientes() {

		List<Cliente> retorno = null;

		try {
			retorno = clientedao.loadAll();
		} catch (EntitiesDAOExcption e) {
			e.printStackTrace();
		}
		return retorno;
	}
	
	
	//Deleta um objeto passando o objeto inteiro.
	public boolean Del(){
		
		boolean ok = false;
		
		try {
			clientedao.delete(cliente);
			ok = true;
		} catch (EntitiesDAOExcption e) {
			ok = false;
			e.printStackTrace();
		}
		
		return ok;
	}

	
	
	
	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

}
